package edu.upc.e402grupo02.e402grupo02.service.impl;

import edu.upc.e402grupo02.e402grupo02.dao.PerfilDAO;
import edu.upc.e402grupo02.e402grupo02.dao.UsuarioDAO;
import edu.upc.e402grupo02.e402grupo02.modelo.Perfil;
import edu.upc.e402grupo02.e402grupo02.modelo.Usuario;
import edu.upc.e402grupo02.e402grupo02.service.SeguridadService;

public class SeguridadServiceImpl implements SeguridadService{

	private UsuarioDAO usuarioDAO;
	private PerfilDAO perfilDAO;
	
	public void setUsuarioDAO(UsuarioDAO usuarioDAO) {
		this.usuarioDAO = usuarioDAO;
	}
	
	public void setPerfilDAO(PerfilDAO perfilDAO) {
		this.perfilDAO = perfilDAO;
	}

	public Usuario findUsuario(String login) {
		return usuarioDAO.findByLogin(login);
	}

	public boolean asignarPerfil(Usuario usuario, Perfil perfil) throws Exception {
		Perfil p = perfilDAO.findById(perfil.getId());
		if(p==null){
			throw new Exception("El perfil no existe");
		}
		
		Usuario u = usuarioDAO.findByLogin(usuario.getLogin());
		if(u==null){
			throw new Exception("El usuario no existe");
		}
		
		return usuarioDAO.asignarPerfil(u, p);
	}

	public boolean quitarPerfil(Usuario usuario, Perfil perfil) throws Exception {
		Perfil p = perfilDAO.findById(perfil.getId());
		if(p==null){
			throw new Exception("El perfil no existe");
		}
		
		Usuario u = usuarioDAO.findByLogin(usuario.getLogin());
		if(u==null){
			throw new Exception("El usuario no existe");
		}
		
		return usuarioDAO.quitarPerfil(u, p);
	}

	public boolean tieneAcceso(Usuario usuario, int acceso) throws Exception {
		return usuarioDAO.tieneAcceso(usuario, acceso);
	}
	
	
	
	
}
